﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;

namespace AFCEPF.BankApplication.DAL
{
    public static class DbAccessorFactory
    {
        /// <summary>
        /// Renvoie le bon type de DbAccessor (Sql Server
        /// ou MySql) selon la clé "DatabaseType" contenue
        /// dans le fichier de config de l'application.
        /// </summary>
        /// <returns></returns>
        public static AbstractDbAccessor Create(DataMapper mapper)
        {
            AbstractDbAccessor result = null;

            // on récupère les valeurs des deux clés 
            // dans le fichier App.config..
            string databaseType = ConfigurationManager.AppSettings["DatabaseType"];
            string connectionString = ConfigurationManager.AppSettings["ConnectionString"];


            // Et l'on instancie le bon type de DbAccessor
            // selon la valeur de la clé DatabaseType..
            if (databaseType == "SqlServer")
            {
                result = new SqlServerDbAccessor(connectionString, mapper);
            }
            else if (databaseType == "MySql")
            {
                result = new MySqlDbAccessor(connectionString, mapper);
            }
            else
            {
                string message = string.Format("Clé DatabaseType = {0} invalide", databaseType);

                throw new InvalidDatabaseTypeException(message);
            }

            return result;
        }

    }
}
